package com.misboot.document.service;

import com.alibaba.fastjson.JSONObject;
import com.misboot.document.dto.FileReqDTO;
import com.misboot.document.utils.wps.Token;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * File
 *
 * @Author 湖南佐佑时代科技有限公司
 * @Version 5.4.21
 * @Email service@zuoyo.com
 * @Date 2022-06-16 13:31:39
 */
public interface FileService {

    /**
     * 获取预览url
     *
     * @param fileId 文件id
     * @return uuid uuid
     */
    Token getViewUrl(String fileId, String userId, boolean b, String bucket);


    /**
     * 通过fileId获取wpsUrl以及token
     *
     * @param fileId 文件id
     * @return token（包含url）
     */
    Token getViewUrl(String fileId, boolean b, String uuid, String uploadType,String permission);

    /**
     * 获取文件元数据
     */
    Map<String, Object> getFileInfo(String w_userid, String w_filepath, String w_filetype, String _w_fileId, Map<String, Object> params);

    /**
     * 创建模板
     *
     * @param template 模板
     */
    Object createTemplateFile(String template, String puuid, String bucket);

    /**
     * 创建文件
     *
     * @param taskId 任务ID
     * @param srcUri URI
     * @param exportType 类型
     */
    void convertFile(String taskId, String srcUri, String exportType);

    /**
     * 文件转换查询
     *
     * @param taskId 模板
     */
    Object getConvertQueryRes(String taskId);

    /**
     * 保存文件
     *
     * @param file 文件
     * @param w_userid 工号
     * @param params 其他参数
     */
    Map<String, Object> fileSave(MultipartFile file, String w_userid, Map<String, Object> params);

    /**
     * 文件版本
     *
     * @param version 版本
     */
    Map<String, Object> fileVersion(Integer version);

    /**
     * 文件重命名
     */
    void fileRename(String name, String w_userid, Map<String, Object> params);

    /**
     * 文件历史
     *
     * @param req 版本
     */
    Map<String, Object> fileHistory(FileReqDTO req);

    /**
     * 新建文件
     *
     * @param file 文件
     * @param w_userid 工号
     */
    Map<String, Object> fileNew(MultipartFile file, String w_userid, Map<String, Object> params);

    /**
     * 转换文件回调
     */
    void convertCallBack(HttpServletRequest request);

    /**
     * 通知此文件目前有哪些人正在协作
     */
    Object fileOnline(JSONObject toJSON, Map<String, Object> params);


}
